package 框架学习.SpringBoot.应用.分层解耦.解耦.IOC和DI.详解.IOC;

public class index {
    public static void main(String[] args) {
        //IOC——控制反转

        //所谓控制反转
        //就是将对象的控制权交给IOC容器，由IOC容器来创建和管理对象
        //而IOC容器中的这些对象也称为Bean对象

        //为了更好地标识某个对象是在哪个层（controller、service、dao）的Bean对象
        //spring又提供了@Component的三个衍生注解
        //@Controller           ————标注在控制器类上
        //@Service              ————标注在业务类上
        ///@Repository          ————标注在数据访问类上（由于与mybatis整合，用的少）
        //在开发中，属于web开发的三层结构的类，需要放入IOC容器，一般使用下面三种衍生注解
        //而@Component注解用于不能归于三层架构，而又需要放入容器的类（最典型的就是一些工具类）
        //使用以上四个注解都可以声明bean，但是在springboot集成web开发中，声明 控制器Bean 只能用@Controller。
        //详见springboot-showEmp-IOC_DI项目

        //在IOC容器中，每一个Bean对象都有一个标识（也就是名字）
        //我们可以通过注解中的value这个属性来指定一个Bean的名字
        //如果我们没有指定Bean的名字，则会使用默认的名字（首字母小写的类名）
        //而类名我们一般不用指定，使用默认就可以


        //Bean的组件扫描：
        //其实用@Component、@Controller、@Service、@Repository等注解声明的Bean不一定会生效
        //在这个里面，还涉及到Bean的组件扫描
        //前面声明Bean的四大注解要想生效，还需要被组件扫描注解@ComponentScan扫描
        //@ComponentScan注解没有显示配置，但是实际上已经包含在了启动类声明注解@SpringBootApplication中
        //默认扫描范围是启动类所在包及其子包


    }
}
